home *** CD-ROM | disk | FTP | other *** search
- {A function and test program for computing the work week under one common
- definition.
-
- Written 94/10/05, Kim Kokkonen, TurboPower Software
- }
-
- uses
- opdate; {tpdate ok too}
-
- function WeekOfYear(Julian : Date) : Integer;
- {-Return the week-of-year from a julian date. As defined here, the week
- always starts on a Sunday. Week 1 starts on the first Sunday of the
- year. Returns 0 for days earlier than that, and -1 for invalid dates.}
-
- var
- Day, Month, Year : Integer;
- FirstJulian : Date;
- FirstDay : DayType;
- begin
- {Exit for invalid dates}
- if (Julian < MinDate) or (Julian > MaxDate) then begin
- WeekOfYear := -1;
- exit;
- end;
-
- {Compute FirstJulian, the julian date for the first Sunday in the year}
- DateToDMY(Julian, Day, Month, Year);
- FirstJulian := DMYToDate(1, 1, Year);
- FirstDay := DayOfWeek(FirstJulian);
- if FirstDay <> Sunday then
- inc(FirstJulian, 7-Ord(FirstDay));
-
- if Julian < FirstJulian then
- WeekOfYear := 0
- else
- WeekOfYear := (Julian-FirstJulian+7) div 7;
- end;
-
- var
- s : string;
- d : date;
-
- begin
- repeat
- Write('Enter date (dd/mm/yy): ');
- ReadLn(s);
- if s = '' then
- halt;
- if (Length(s) = 8) and (s[3] = '/') and (s[6] = '/') then begin
- d := DateStringToDate('dd/mm/yy', s);
- WriteLn('Week: ', WeekOfYear(d));
- end else
- WriteLn('Invalid date format');
- until False;
- end.